package com.neu.envprotection.admin.service;

import com.neu.envprotection.admin.dto.resp.GetVerifyCodeRespDto;
import com.neu.envprotection.common.resp.PageRespDto;
import com.neu.envprotection.common.resp.RestResp;
import com.neu.envprotection.admin.dao.entity.User;
import com.neu.envprotection.admin.dto.req.GetGridManReqTto;
import com.neu.envprotection.admin.dto.req.GetSupervisorReqDto;
import com.neu.envprotection.admin.dto.req.UserLoginReqDto;
import com.neu.envprotection.admin.dto.req.UserRegisterReqDto;
import com.neu.envprotection.admin.dto.resp.GetGridManRespDto;
import com.neu.envprotection.admin.dto.resp.GetSupervisorRespDto;
import com.neu.envprotection.admin.dto.resp.UserLoginRespDto;

import java.util.List;

public interface UserService {

    RestResp<Void> register(UserRegisterReqDto dto);

    RestResp<UserLoginRespDto> login(UserLoginReqDto dto);

    RestResp<User> getUser(Integer id);

    RestResp<User> getUserById(Integer id);

    RestResp<PageRespDto<GetSupervisorRespDto>> queryPageSupervisor(GetSupervisorReqDto dto);

    RestResp<PageRespDto<GetGridManRespDto>> queryGridMan(GetGridManReqTto dto);

    RestResp<List<GetGridManRespDto>> getAllGridMan();


    RestResp<Void> updateById(User user);

    RestResp<GetVerifyCodeRespDto> getVerifyCode();

    RestResp<Void> storeVerifyCode(GetVerifyCodeRespDto dto);

    RestResp<Void> deleteUser(Integer uid);

}
